SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[paChequearIncompatibilidadHorariaV3]
@TipoMovimiento VARCHAR(2), -- A = Alta / AR = Alta Rectificar / LF = Licencia Fin / LR = Licencia Rectificar / BR = Baja Rectificar / C = Consulta
@CausaAlta INT = NULL,  
@Agente INT, 
@HorasDeMediaIniciales INT,
@HorasDeCargoIniciales INT,
@HorasTerciariasIniciales INT,
@Horas131Iniciales INT, 
@FechaDesde DATETIME,
@FechaHasta DATETIME,
@Excluir INT = NULL ,
@Incompatible INT OUTPUT, -- 0 = Todo OK / 1 = Warning / 2 = Incompatible
@Estado INT OUTPUT,  -- 0 = Nada / 1 = Aviso	/ 3 = Error sin posibilidad de Forzar (pantalla)
@Diagnostico VARCHAR(200) OUTPUT

AS
SET NOCOUNT ON
-- Para almacenar la acumulacion horaria del agente en horas.
DECLARE @AcumulacionHorariaHoras INT
--Para almacenar la acumulacion horaria del agente en cargos (por equivalencia horaria del cargo)
DECLARE @AcumulacionHorariaCargo INT
-- Para almacenar la acumulacion horaria total.
DECLARE @AcumHoraria INT
-- Almacena el Total de Horas nuevas (de los movimientos que se pasan)
DECLARE @SumHorasNuevas INT
-- Horas dadas de alta para el Agente con Articulo 131
DECLARE @Horas131 INT
-- Total de horas terciarias que tiene el agente.
DECLARE @HorasTerciarias INT
-- Para almacenar el parametro TopeHorasDeServicios
DECLARE @TopeHorasDeServicios INT
-- Para almacenar el parametro TopeHorasTotalesDeServicios
DECLARE @TopeHorasTotales INT
-- Almacena las horas de Servicios Externos
DECLARE @HorasServiciosExternos INT
-- Almacena las horas totales
DECLARE @HorasTotales INT
-- Almacena la cantidad de Horas Terciarias en regimen salarial Cargos
DECLARE @AcumulacionHorariaCargoTerciaria INT
-- Almacena la cantidad de Horas Terciarias de Servicios Externos.
DECLARE @HorasServiciosExternosTeriarias INT
-- Otras Variables del Proceso
DECLARE @IDFechaIncompatible INT 
DECLARE @FechaIncompatible VARCHAR(10) 
DECLARE @TotalHorasServicioIncompatible INT 
DECLARE @TotalHorasTerciariasIncompatible INT 
DECLARE @TotalHorasIncompatible INT
DECLARE @ErrorT INT

-- Inicializacion de Variables
SET @AcumulacionHorariaCargo = 0
SET @AcumulacionHorariaHoras = 0
SET @AcumHoraria = 0
SET @SumHorasNuevas = 0
SET @Horas131 = 0
SET @HorasTerciarias = 0
SET @TopeHorasDeServicios = 0
SET @TopeHorasTotales = 0
SET @HorasServiciosExternos = 0
SET @FechaIncompatible = NULL 
SET @TotalHorasServicioIncompatible = 0 
SET @TotalHorasTerciariasIncompatible = 0 
SET @TotalHorasIncompatible = 0 


--VARIABLES CURSOR

DECLARE @FA DATETIME
DECLARE @FAINT INT
DECLARE @FB DATETIME
DECLARE @FBINT INT
DECLARE @CH INT
DECLARE @TH INT
DECLARE @IDCONTROL INT

BEGIN TRANSACTION
      SET @ErrorT=0

	-- Buscamos la menor fecha para armar la tabla de tiempo, si no existe valo para @FechaDesde
	IF @FechaDesde IS NULL
		BEGIN
			SELECT @FechaDesde = MIN(S.FechaAlta) 
			FROM TB_ServiciosAgentes S
			INNER JOIN TB_SubServiciosAgentes SS ON S.IdServicioAgente = SS.ServicioAgente AND S.FechaAlta = SS.FechaAlta
			INNER JOIN TB_Plazas P ON P.IdPlaza = SS.Plaza
			WHERE S.TipodeServicio IN (1, 2) 
				AND S.IdServicioAgente NOT IN (SELECT  SRel.IdServicio FROM tb_RelInterservicios SRel)
				AND s.Agente = @Agente
				AND P.paquete IS NULL
				AND ((S.FechaBaja IS NULL) OR (S.FechaBaja IS NOT NULL AND S.FechaAlta <> S.FechaBaja))
				AND ((S.CausaAlta IN (9,19) AND P.Presupuesto<>4) OR (S.CausaAlta IN (SELECT CAS.idCausaAlta FROM Tb_CausasAltas CAS WHERE CAS.idCausaAlta NOT IN(9,18,19))))
	
			IF @FechaDesde IS NULL
				SET @FechaDesde = '01/01/1996'			
		END
	
	IF @FECHAHASTA IS NULL
		SET @FECHAHASTA=DATEADD(DAY,120,GETDATE())
	
		
	-- Armar Definicion Tabla para Control
	
	IF object_id('tempdb..#ControlIncompatibilidad') IS NOT NULL  
			DROP TABLE #ControlIncompatibilidad
	
			
	CREATE TABLE #ControlIncompatibilidad ( IDFecha INT PRIMARY KEY, Fecha VARCHAR(10), AcumulacionHorariaHoras INT, AcumulacionHorariaCargo INT, AcumulacionHorariaCargoTerciaria INT, Horas131 INT, HorasTerciarias INT,  HorasServiciosExternos INT, HorasServiciosExternosTeriarias INT, TotalHorasServicio INT, TotalHorasTerciarias INT, TotalHoras INT)
	SET @ErrorT = @@ERROR 
	IF @ErrorT <> 0 GOTO Salir
	
	
	SET @fa=@fechadesde
	SET @fb=@fechahasta
	WHILE (@FA<=@FB)
		      BEGIN
		         SET @FAINT=convert(int,datepart(year,@FA)*10000+ datepart(month,@FA)*100+datepart(day,@FA))
		         
	  	        Insert #ControlIncompatibilidad VALUES (@faint,CONVERT(VARCHAR(10),@FA,103), 0,0,0,0,0,0,0,0,0,0)
	
			           	      
	           SET @FA=DATEADD(DAY,1,@FA) 
	           
		      END
	SET @ErrorT = @@ERROR 
	IF @ErrorT <> 0 GOTO Salir
	
	
	-- Saca el Tope de Horas a controlar.
	SELECT @TopeHorasDeServicios = CONVERT(INT, valor1) FROM tb_Parametros WHERE Parametro = 'TopeHorasDeServicios'
	SELECT @TopeHorasTotales =  CONVERT(INT, valor1) FROM tb_Parametros WHERE Parametro = 'TopeHorasTotalesDeServicios'
	
	
	DECLARE  T CURSOR FORWARD_ONLY FOR
	
	-- Acumulacion de Horas
	SELECT SS.FechaAlta, ISNULL(SS.FechaBaja, @FECHAHASTA) FechaBaja, ISNULL(S.Horas, 0) Horas, 1 Tipo 
	FROM TB_SubServiciosAgentes SS
	INNER JOIN TB_ServiciosAgentes S  ON S.IdServicioAgente = SS.ServicioAgente 
	INNER JOIN TB_Plazas P ON P.IdPlaza = SS.Plaza
	WHERE ((@FechaDesde >= SS.FechaAlta AND (SS.FechaBaja IS NULL OR (SS.FechaBaja IS NOT NULL AND SS.FechaBaja >= @FechaDesde))) 
	     OR (@FechaDesde <= SS.FechaAlta AND (@FechaHasta IS NULL OR (@FechaHasta IS NOT NULL AND SS.FechaAlta <= @FechaHasta))))
	    AND (ss.licencia IS NULL OR ss.licencia NOT IN (SELECT idLicencia FROM tb_Licencias WHERE cuentaincompatibilidad = 'N' ))	  
	    AND S.regimensalarial = 13 
		AND S.TipodeServicio IN (1, 2) 
		--AND S.IdServicioAgente NOT IN (SELECT  SRel.IdServicio FROM tb_RelInterservicios SRel)
		AND s.Agente = @Agente
		AND P.paquete IS NULL
		AND S.CargoSalarial <> 4001
		AND ( (@Excluir IS NULL) OR (@Excluir IS NOT NULL AND S.IdServicioAgente <> @Excluir))
		AND ((S.CausaAlta IN (9,19) AND P.Presupuesto<>4) OR (S.CausaAlta IN (SELECT CAS.idCausaAlta FROM Tb_CausasAltas CAS WHERE CAS.idCausaAlta NOT IN(9,12,18,19))))		
		
		
	UNION ALL 
	
	
	-- Horas de regimen salarial Cargo
	SELECT SS.FechaAlta, ISNULL(SS.FechaBaja, @FECHAHASTA) FechaBaja, ISNULL(C.EquivHoraria,0) Horas, 2 Tipo 
	FROM TB_SubServiciosAgentes SS
	INNER JOIN TB_ServiciosAgentes S ON S.IdServicioAgente = SS.ServicioAgente 
	INNER JOIN TB_CargosSalariales C ON C.IdCargo = S.CargoSalarial
	INNER JOIN tb_Plazas P ON P.idPlaza = SS.Plaza 
	WHERE ((@FechaDesde >= SS.FechaAlta AND (SS.FechaBaja IS NULL OR (SS.FechaBaja IS NOT NULL AND SS.FechaBaja >= @FechaDesde))) 
	   	 OR (@FechaDesde <= SS.FechaAlta AND (@FechaHasta IS NULL OR (@FechaHasta IS NOT NULL AND SS.fechaAlta <= @FechaHasta))))
		AND (SS.licencia IS NULL OR ss.licencia NOT IN (SELECT idLicencia FROM tb_Licencias WHERE cuentaincompatibilidad = 'N'))				 
		AND S.RegimenSalarial = 12 
		AND S.TipodeServicio IN (1, 2) 
		--AND S.IdServicioAgente NOT IN (SELECT  SRel.IdServicio FROM tb_RelInterservicios SRel)	
		AND S.Agente = @Agente
		AND C.Escalafon<>24 
		AND ( (@Excluir IS NULL) OR (@Excluir IS NOT NULL AND S.IdServicioAgente <> @Excluir))
		AND ((S.CausaAlta IN (9,19) AND P.Presupuesto<>4) OR (S.CausaAlta IN (SELECT CAS.idCausaAlta FROM Tb_CausasAltas CAS WHERE CAS.idCausaAlta NOT IN(9,12,18,19))))
	
	UNION ALL 
	
	-- ACUMULACION CARGOS TERCIARIOS
	SELECT SS.FechaAlta, ISNULL(SS.FechaBaja, @FECHAHASTA) FechaBaja, ISNULL(C.EquivHoraria,0) Horas, 3 Tipo
	FROM TB_SubServiciosAgentes SS
	INNER JOIN TB_ServiciosAgentes S ON S.IdServicioAgente = SS.ServicioAgente --AND S.FechaAlta = SS.FechaAlta
	INNER JOIN TB_CargosSalariales C ON C.IdCargo = S.CargoSalarial
	INNER JOIN tb_Plazas P ON P.idPlaza = SS.Plaza 
	WHERE ((@FechaDesde >= SS.FechaAlta AND (SS.FechaBaja IS NULL OR (SS.FechaBaja IS NOT NULL AND SS.FechaBaja >= @FechaDesde))) 
		 OR (@FechaDesde <= SS.FechaAlta AND (@FechaHasta IS NULL OR (@FechaHasta IS NOT NULL AND SS.fechaAlta <= @FechaHasta))))
		AND (SS.licencia IS NULL OR SS.licencia NOT IN (SELECT idLicencia FROM tb_Licencias WHERE cuentaincompatibilidad = 'N'))
		AND S.RegimenSalarial = 12 
		AND S.TipodeServicio IN (1, 2) 
		--AND S.IdServicioAgente NOT IN (SELECT  SRel.IdServicio FROM tb_RelInterservicios SRel)  	
		AND S.Agente = @Agente
		AND C.Escalafon=24  
		AND ( (@Excluir IS NULL) OR (@Excluir IS NOT NULL AND S.IdServicioAgente <> @Excluir))
		AND ((S.CausaAlta IN (9,19) AND P.Presupuesto<>4) OR (S.CausaAlta IN (SELECT CAS.idCausaAlta FROM Tb_CausasAltas CAS WHERE CAS.idCausaAlta NOT IN(9,12,18,19))))
		
	UNION ALL 
	
	--Horas con Articulo 131
	SELECT SS.FechaAlta, ISNULL(SS.FechaBaja, @FECHAHASTA) FechaBaja, ISNULL(S.Horas,0) Horas, 4 Tipo
	FROM TB_SubServiciosAgentes SS
	INNER JOIN TB_ServiciosAgentes S  ON S.IdServicioAgente = SS.ServicioAgente --AND S.FechaAlta = SS.FechaAlta
	WHERE ((@FechaDesde >= SS.FechaAlta AND (SS.FechaBaja IS NULL OR (SS.FechaBaja IS NOT NULL AND SS.FechaBaja >= @FechaDesde)))
		 OR (@FechaDesde <= SS.FechaAlta AND (@FechaHasta IS NULL OR (@FechaHasta IS NOT NULL AND SS.fechaAlta <= @FechaHasta))))
		AND S.Agente = @Agente
		AND S.CausaAlta = 12
		AND S.TipodeServicio IN (1, 2) 
		--AND S.IdServicioAgente NOT IN (SELECT  SRel.IdServicio FROM tb_RelInterservicios SRel)  -- Agregado 08-04-2008
		AND ( (@Excluir IS NULL) OR (@Excluir IS NOT NULL AND S.IdServicioAgente <> @Excluir))
		
	UNION ALL 
	
	--Horas Terciarias
	SELECT SS.FechaAlta, ISNULL(SS.FechaBaja, @FECHAHASTA) FechaBaja, ISNULL(S.Horas,0) Horas, 5 Tipo
	FROM TB_SubServiciosAgentes SS
	INNER JOIN TB_ServiciosAgentes S ON S.IdServicioAgente = SS.ServicioAgente --AND S.FechaAlta = SS.FechaAlta
	INNER JOIN tb_Plazas P ON P.idPlaza = SS.Plaza 
	WHERE ((@FechaDesde >= SS.FechaAlta AND (SS.FechaBaja IS NULL OR (SS.FechaBaja IS NOT NULL AND SS.FechaBaja >= @FechaDesde))) 
 	   	 OR (@FechaDesde <= SS.FechaAlta AND (@FechaHasta IS NULL OR (@FechaHasta IS NOT NULL AND SS.fechaAlta <= @FechaHasta))))
		AND (SS.licencia IS NULL OR SS.licencia NOT IN (SELECT idLicencia FROM tb_Licencias WHERE cuentaincompatibilidad = 'N'))
		AND S.CargoSalarial = 4001 
		AND S.TipodeServicio IN (1, 2) 
		--AND S.IdServicioAgente NOT IN (SELECT  SRel.IdServicio FROM tb_RelInterservicios SRel)
		AND S.Agente=@Agente 
		AND ( (@Excluir IS NULL) OR (@Excluir IS NOT NULL AND S.IdServicioAgente <> @Excluir))
		AND ((S.CausaAlta IN (9,19) AND P.Presupuesto<>4) OR (S.CausaAlta IN (SELECT CAS.idCausaAlta FROM Tb_CausasAltas CAS WHERE CAS.idCausaAlta NOT IN(9,12,18,19))))
		
	UNION ALL 
	
	--Horas MEDIAS de Servicios Externos  
	SELECT FechaAlta, ISNULL(FechaBaja, @FECHAHASTA) FechaBaja, ISNULL(ce.Horas,0) Horas, 6 Tipo
	FROM TB_ServiciosExternos 
	INNER JOIN TB_CargosExternos ce on  tb_serviciosexternos.cargoexterno=ce.id  
	WHERE  idAgente=@Agente 
		AND ((@FechaDesde >= FechaAlta AND (FechaBaja IS NULL OR (FechaBaja IS NOT NULL AND FechaBaja >= @FechaDesde))) -- Se Cambio el 27-11-2007
			OR (@FechaDesde <= FechaAlta AND (@FechaHasta IS NULL OR (@FechaHasta IS NOT NULL AND FechaAlta <= @FechaHasta))))
		AND CE.seconsideransuperioresoterciarias='N' 
	
	UNION ALL 
	
	--Horas TERCIARIAS de Servicios Externos  
	SELECT FechaAlta, ISNULL(FechaBaja, @FECHAHASTA) FechaBaja, ISNULL(ce.Horas,0) Horas, 7 Tipo
	FROM tb_ServiciosExternos 
	INNER JOIN tb_CargosExternos ce on  tb_serviciosexternos.cargoexterno=ce.id  
	WHERE  idAgente=@Agente
		AND ((@FechaDesde >= FechaAlta AND (FechaBaja IS NULL OR (FechaBaja IS NOT NULL AND FechaBaja >= @FechaDesde))) -- Se Cambio el 27-11-2007
			OR (@FechaDesde <= FechaAlta AND (@FechaHasta IS NULL OR (@FechaHasta IS NOT NULL AND FechaAlta <= @FechaHasta))))
		AND ce.seconsideransuperioresoterciarias='S' 
	
    ORDER BY SS.FechaAlta	 
	  
	  	
	    open T
	 	fetch next from T into @FA,@FB,@CH,@TH
	
		while @@FETCH_STATUS = 0
	
		BEGIN
	
		    IF (@FA<@FECHADESDE)
		             SET @FA=@FECHADESDE
		    IF (@fb IS NULL) OR (@fb>@fechahasta)
		             SET @FB=@FECHAHASTA
		                      
	      WHILE (@FA<=@FB)
		      BEGIN
		         SET @FAINT=convert(int,datepart(year,@FA)*10000+ datepart(month,@FA)*100+datepart(day,@FA))
		         
		         IF @TH = 1
		         	UPDATE #ControlIncompatibilidad SET AcumulacionHorariaHoras = AcumulacionHorariaHoras + @CH  WHERE IDFecha = @FAINT
	
		         IF @TH = 2
		         	UPDATE #ControlIncompatibilidad SET AcumulacionHorariaCargo = AcumulacionHorariaCargo + @CH  WHERE IDFecha = @FAINT
	
		         IF @TH = 3
		         	UPDATE #ControlIncompatibilidad SET AcumulacionHorariaCargoTerciaria = AcumulacionHorariaCargoTerciaria + @CH  WHERE IDFecha = @FAINT
	
		         IF @TH = 4
		         	UPDATE #ControlIncompatibilidad SET Horas131 = Horas131 + @CH  WHERE IDFecha = @FAINT
	
		         IF @TH = 5
		         	UPDATE #ControlIncompatibilidad SET HorasTerciarias = HorasTerciarias + @CH  WHERE IDFecha = @FAINT
	
		         IF @TH = 6
		         	UPDATE #ControlIncompatibilidad SET HorasServiciosExternos = HorasServiciosExternos + @CH  WHERE IDFecha = @FAINT
	
		         IF @TH = 7
		         	UPDATE #ControlIncompatibilidad SET HorasServiciosExternosTeriarias = HorasServiciosExternosTeriarias + @CH  WHERE IDFecha = @FAINT
	
			           
		      
	           SET @FA=DATEADD(DAY,1,@FA) 
	           
		      END
			
			fetch next from T into @FA,@FB,@CH,@TH
			
		end
		
	
		close T
		deallocate T
	
	UPDATE #ControlIncompatibilidad SET  
		TotalHorasServicio = AcumulacionHorariaHoras + AcumulacionHorariaCargo + HorasServiciosExternos + @HorasDeCargoIniciales + @HorasDeMediaIniciales ,
		TotalHorasTerciarias = HorasTerciarias + HorasServiciosExternosTeriarias + AcumulacionHorariaCargoTerciaria + @HorasTerciariasIniciales ,
		TotalHoras = AcumulacionHorariaHoras + AcumulacionHorariaCargo + HorasServiciosExternos + HorasTerciarias + HorasServiciosExternosTeriarias + AcumulacionHorariaCargoTerciaria + @HorasDeCargoIniciales + @HorasDeMediaIniciales + @HorasTerciariasIniciales
	SET @ErrorT = @@ERROR 
	IF @ErrorT <> 0 
	   GOTO Salir


	-- Buscar para cada dia, si el servicio excluido no esta de licencia que "N" cuente incopatibilidad   -- AGREGADO 23-02-2009
            IF @Excluir IS NULL 
                SET  @Excluir = 0 
	
	IF @Excluir <> 0  
		BEGIN 
			DECLARE  T1 CURSOR FORWARD_ONLY FOR
			SELECT SS.FechaAlta, ISNULL(SS.FechaBaja,GETDATE()) FechaBaja FROM tb_SubserviciosAgentes SS
				INNER JOIN  tb_ServiciosAgentes S ON S.idServicioAgente = SS.ServicioAgente 
				INNER JOIN  tb_Licencias L ON SS.Licencia = L.idLicencia 
				 WHERE SS.ServicioAgente = @Excluir
				   AND L.CuentaIncompatibilidad = 'N'
				 ORDER BY ss.FechaAlta 

		  	OPEN T1
		 	FETCH NEXT FROM T1 INTO @FA,@FB
		
			WHILE @@FETCH_STATUS = 0
		
			BEGIN

				UPDATE #ControlIncompatibilidad SET  
					TotalHorasServicio =  TotalHorasServicio - (@HorasDeCargoIniciales + @HorasDeMediaIniciales) ,
					TotalHorasTerciarias = TotalHorasTerciarias - @HorasTerciariasIniciales ,
					TotalHoras = TotalHoras - (@HorasDeCargoIniciales + @HorasDeMediaIniciales + @HorasTerciariasIniciales)
						WHERE Fecha BETWEEN @FA AND @FB
						
				FETCH  NEXT FROM T1 INTO @FA,@FB
				
			END
			
		
			CLOSE T1
			DEALLOCATE  T1

		
		END

	
	-- Evaluar si en Algun dia Entra en Incompatibilidad 
	IF EXISTS (SELECT TOP 1 IDFecha   FROM #ControlIncompatibilidad
					WHERE (TotalHoras > @TopeHorasTotales) 
					   OR (TotalHorasServicio > @TopeHorasDeServicios))
	   BEGIN				
	   
 			-- Aqui se considera que "ESTA EN INCOMPATIBILIDAD" 
 			SET @Incompatible = 2 
 			
 			-- Aqui como esta en INCOMPATIBILIDAD se le Retorna Codigo 3 a las Pantallas
 			SET @Estado = 3
 			
			-- Aqui se guarda en Variables el Dia y las Horas 
			SELECT TOP 1 @IDFechaIncompatible = MIN(IDFecha), 
			             @TotalHorasServicioIncompatible = TotalHorasServicio, 
			             @TotalHorasTerciariasIncompatible = TotalHorasTerciarias,
			             @TotalHorasIncompatible = TotalHoras
			  FROM #ControlIncompatibilidad
				WHERE (TotalHoras > @TopeHorasTotales) 
				   OR (TotalHorasServicio > @TopeHorasDeServicios)
				GROUP BY TotalHorasServicio, TotalHorasTerciarias, TotalHoras 
			
			-- Aqui guardo la Fecha que se da la primera incompatibilidad
			SELECT @FechaIncompatible = Fecha FROM #ControlIncompatibilidad WHERE IDFecha=@IDFechaIncompatible
						
			-- Aqui Armo la primera parte del diagnostico
			SET @Diagnostico = ' / Acumuladas : ('+CONVERT(VARCHAR,@TotalHorasServicioIncompatible)+' de Media y '+CONVERT(VARCHAR,@TotalHorasTerciariasIncompatible)+' Terciarias/Superiores)'
			SET @Diagnostico = @Diagnostico+' / Topes Horas : ('+CONVERT(VARCHAR, @TopeHorasTotales)+' Totales y '+CONVERT(VARCHAR, @TopeHorasDeServicios)+' de Media)'

			-- Aqui Armo el Mensaje segun el Tipo de Movimiento	
			IF 	@TipoMovimiento = 'A'
			   BEGIN 
			   		SET @Diagnostico = 'Al Registrar el Alta el Agente entraria en Incompatibilidad el día '+CONVERT(VARCHAR(10), @FechaIncompatible, 103)+@Diagnostico
			   END 
  			IF 	@TipoMovimiento = 'AR'
			   BEGIN 
			   		SET @Diagnostico = 'Al Rectificar el Alta el Agente entraria en Incompatibilidad el día '+CONVERT(VARCHAR(10), @FechaIncompatible, 103)+@Diagnostico
			   END 
  			IF 	@TipoMovimiento = 'LF'
			   BEGIN 
			   		SET @Diagnostico = 'Finalizando la Licencia el Agente entraria en Incompatibilidad el día '+CONVERT(VARCHAR(10), @FechaIncompatible, 103)+@Diagnostico
			   END 
  			IF 	@TipoMovimiento = 'LR'
			   BEGIN 
			   		SET @Diagnostico = 'Rectificando la Licencia el Agente entraria en Incompatibilidad el día '+CONVERT(VARCHAR(10), @FechaIncompatible, 103)+@Diagnostico
			   END 
  			IF 	@TipoMovimiento = 'BR'
			   BEGIN 
			   		SET @Diagnostico = 'Rectificando la Baja el Agente entraria en Incompatibilidad el día '+CONVERT(VARCHAR(10), @FechaIncompatible, 103)+@Diagnostico
			   END 
  
	   END 
	ELSE
	   BEGIN 
	   		
			-- Evaluar cuando es Alta por 131
			IF (@TipoMovimiento = 'A' OR @TipoMovimiento = 'AR') AND @CausaAlta = 12
				BEGIN 
					IF NOT EXISTS(SELECT TOP 1 IdFecha FROM #ControlIncompatibilidad 
					   WHERE ((TotalHoras + Horas131 + @Horas131Iniciales) > @TopeHorasTotales)
					      OR ((TotalHorasServicio + Horas131 + @Horas131Iniciales) > @TopeHorasDeServicios))
					   BEGIN				
				 			-- Aqui se considera que "PORDRIA REGISTRAR LAS HORAS COMO NORMALES"
				 			SET @Incompatible = 1
				 			
				 			-- Aqui como esta en AVISO se le Retorna Codigo 1 a las Pantallas
				 			SET @Estado = 1
					   
					   		SET @Diagnostico = 'El Agente no se excederia del Tope de Horas si incluyera este Alta sin el Artículo 131. Por favor VERIFIQUE que efectivamente el Alta corresponda por Articulo 131.-'
							         
					   END 		         
				END
	   
	   END 
	
    IF @TipoMovimiento = 'C'
		   BEGIN 
				SELECT * FROM #ControlIncompatibilidad 			   		
		   END 



Salir:
IF @ErrorT <> 0 
	ROLLBACK TRANSACTION
ELSE 
	COMMIT TRANSACTION
GO
